cache:
directories:
- $HOME/Qt
+ - os: linux
+ dist: trusty
+ sudo: required
+ compiler: gcc
+ env:
+ - GEN_COVERAGE="true"
+ addons:
+ apt:
+ packages:
+ - libusb-dev
+ - gcovr
+ cache:
+ directories:
+ - $HOME/Qt
install:
- if [ "${TRAVIS_OS_NAME}" = "osx" ]; then source ./tools/travis_install_osx; fi
+ - if [ "${TRAVIS_OS_NAME}" = "linux" ] && [ "${GEN_COVERAGE}" = "true" ]; then ./tools/travis_install_linux_coverage; fi
script:
- - if [ "${TRAVIS_OS_NAME}" = "linux" ]; then ./tools/travis_script_linux_docker; fi
+ - if [ "${TRAVIS_OS_NAME}" = "linux" ] && [ "${GEN_COVERAGE}" != "true" ]; then ./tools/travis_script_linux_docker; fi
+ - if [ "${TRAVIS_OS_NAME}" = "linux" ] && [ "${GEN_COVERAGE}" = "true" ]; then ./tools/travis_script_linux_coverage; fi
- if [ "${TRAVIS_OS_NAME}" = "osx" ]; then ./tools/travis_script_osx; fi
after_success:
clang-tidy.commands = run-clang-tidy.py $(RUN_CLANG_TIDY_FLAGS)
clang-tidy.depends = compile_commands.json
QMAKE_EXTRA_TARGETS += clang-tidy
+
+# generate coverage report for codacy
+# must use gcc, g++
+# the upload requires CODACY_PROJECT_TOKEN be set.
+# dependencies:
+# wget https://oss.sonatype.org/service/local/repositories/releases/content/com/codacy/codacy-coverage-reporter/4.0.1/codacy-coverage-reporter-4.0.1-assembly.jar
+# extra ubuntu bionic packages: gcovr, openjdk-8-jre-headless, /usr/lib/jvm/java-8-openjdk-amd64/bin/java
+# as of 6/18/2018 you must use java 8, see issue #76, #83 at https://github.com/codacy/codacy-coverage-reporter/issues
+linux{
+ coverage.commands = make clean;
+ coverage.commands += ln -sf GPSBabel gpsbabel;
+ coverage.commands += $(MAKE) CFLAGS=\"$(CFLAGS) -fprofile-arcs -ftest-coverage\" CXXFLAGS=\"$(CXXFLAGS) -fprofile-arcs -ftest-coverage\" LFLAGS=\"$(LFLAGS) --coverage\" &&
+ coverage.commands += ./testo &&
+ coverage.commands += gcov -r $(SOURCES) &&
+ coverage.commands += gcovr -r . --xml --exclude='zlib/*' --exclude='shapelib/*' -o gpsbabel_coverage.xml &&
+ coverage.commands += java -jar codacy-coverage-reporter-4.0.1-assembly.jar report -l cpp -f -r gpsbabel_coverage.xml
+ QMAKE_EXTRA_TARGETS += coverage
+}
RUN apt-get install -y expat fop xsltproc libxml2-utils docbook-xml docbook-xsl
RUN apt-get install -y libusb-dev
RUN apt-get install -y qt5-default libqt5webkit5-dev qttools5-dev-tools
+# pkgs needed to generate coverage report:
+RUN apt-get install -y gcovr openjdk-8-jre-headless
# install environment for locale test
RUN apt-get install -y locales && sed -i 's/^# *\(en_US ISO-8859-1\)/\1/' /etc/locale.gen && locale-gen && locale -a
-The files extract-qt-installer, LICENSE, qt-5.9.5-osx, and README.md are from https://github.com/benlau/qtci
+The files extract-qt-installer, install-qt, LICENSE, qt-5.9.5-osx, and README.md are from https://github.com/benlau/qtci
--- /dev/null
+#!/bin/sh
+#QT_VERSION=5.10.0
+
+QT_VERSION=$1
+echo Downloading Qt
+wget -nv -c https://download.qt.io/archive/qt/$(echo $1 |cut -d "." -f-2)/${QT_VERSION}/qt-opensource-linux-x64-${QT_VERSION}.run
+INSTALLER=qt-opensource-linux-x64-${QT_VERSION}.run
+ENVFILE=qt-${QT_VERSION}.env
+echo Installing Qt
+
+
+extract-qt-installer $PWD/$INSTALLER $PWD/Qt
+
+echo Create $ENVFILE
+cat << EOF > $ENVFILE
+export PATH=$PWD/Qt/${QT_VERSION}/gcc_64/bin:$PATH
+EOF
--- /dev/null
+#!/bin/bash -ex
+#
+# This script is run on travis for the install stage of mac builds.
+# Note the script must be sourced if you want the modified PATH to
+# be used outside this script.
+#
+
+# our expectation is that install-qt creates $QTDIR, $QTDIR/bin.
+QTDIR=${HOME}/Qt/5.7/gcc_64
+
+if [ -d "${QTDIR}/bin" ]; then
+ echo "Using cached Qt."
+ echo "If you need to clear the cache see"
+ echo "https://docs.travis-ci.com/user/caching/#Fetching-and-storing-caches."
+else
+ pushd ${HOME};
+ rm -fr Qt
+ # install_qt creates the install at $PWD/Qt.
+ QT_CI_PACKAGES=qt.57.gcc_64 PATH=${TRAVIS_BUILD_DIR}/tools/qtci:${PATH} install-qt 5.7.1
+ popd;
+fi
+# note that qt-5.7.1.env created by install-qt is not cached!
+export PATH=${QTDIR}/bin:${PATH}
+unset -v QTDIR
--- /dev/null
+#!/bin/bash -ex
+#
+# generate coverage report and upload to codacy
+which qmake
+export PATH=${HOME}/Qt/5.7/gcc_64/bin:$PATH
+which qmake
+
+# debug tokens
+"$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd)"/travis_tokens
+
+wget -nv -c https://oss.sonatype.org/service/local/repositories/releases/content/com/codacy/codacy-coverage-reporter/4.0.1/codacy-coverage-reporter-4.0.1-assembly.jar
+qmake
+make coverage
+
# we assume we are on macOS, so date is not gnu date.
VERSIONID=${VERSIONID:-$(date -ju -f %Y-%m-%dT%H:%M:%S%z $(git show -s --format="%aI" HEAD | sed 's/:\(..\)$/\1/') +%Y%m%dT%H%MZ)-$(git rev-parse --short=7 HEAD)}
+# debug tokens
+"$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd)"/travis_tokens
+
# build and test the CLI
$QMAKE GPSBabel.pro && make && make check
--- /dev/null
+#!/bin/bash -e
+
+# dont leak unhashed tokens!
+set +x
+if [ ! -z "${CODACY_PROJECT_TOKEN+x}" ] ; then
+ if which sha512sum; then
+ echo -n "CODACY_PROJECT_TOKEN hash: "
+ echo $CODACY_PROJECT_TOKEN | sha512sum
+ else
+ echo CODACY_PROJECT_TOKEN hash unknown.
+ fi
+else
+ echo CODACY_PROJECT_TOKEN not set.
+fi
+if [ ! -z "${GITHUB_TOKEN+x}" ] ; then
+ if which sha512sum; then
+ echo -n "GITHUB_TOKEN hash: "
+ echo $GITHUB_TOKEN | sha512sum
+ else
+ echo GITHUB_TOKEN hash unknown.
+ fi
+else
+ echo GITHUB_TOKEN not set.
+fi
+set -x